﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace I3.AgenteIA.Dominio.Gramatica
{
    public class Sentenca
    {
        private IList<Elemento> _elementos = new List<Elemento>();

        /// <summary>
        /// Oração que originou a sentença
        /// </summary>
        public Oracao Oracao { get; protected set; }

        /// <summary>
        /// Texto da sentenca
        /// </summary>
        public string Texto { get; private set; }

        /// <summary>
        /// Elementos da sentença (chunk)
        /// </summary>
        public IEnumerable<Elemento> Elementos { get { return _elementos; } protected set { _elementos = (IList<Elemento>)value; } }

        /// <summary>
        /// Construtor protected do objeto
        /// </summary>
        protected Sentenca() { }

        /// <summary>
        /// Construtor padrão da sentensa
        /// </summary>
        /// <param name="texto">Texto da Sentenca</param>
        public  Sentenca(Oracao oracao, string texto)
        {
            if (oracao == null) throw new ArgumentNullException("A oraçao informada é inválida");
            if(String.IsNullOrEmpty(texto)) throw new ArgumentNullException("O texto informado é inválido");

            this.Oracao = oracao;
            this.Texto = texto;
        }

        public override bool Equals(object obj)
        {
            if (!(obj is Sentenca))
                return false;

            return this.Texto == ((Sentenca)obj).Texto;
        }
    }
}
